Skip to content

Conversation

@jon-myers
Copy link
Contributor

Summary

  • Adds display_tempo property to convert between internal pulse tempo and performance practice tempo (at matra/beat level)
  • In Hindustani music, musicians think of tempo at layer 1, but the internal representation stores tempo at the finest pulse level
  • For a hierarchy like [[4,4,4,4], 4] (Tintal) with internal tempo 60 BPM, display tempo = 60 × 4 = 240 BPM

New Methods

  • display_tempo (property getter/setter): Get/set tempo at matra level
  • get_tempo_at_layer(layer): Get tempo at any specific hierarchy layer
  • _get_hierarchy_mult(layer): Private helper to get multiplier for a layer

Test plan

  • Added 8 new tests covering all new functionality
  • All 409 tests pass (including integration tests)

Closes #55

🤖 Generated with Claude Code

Adds display_tempo property to convert between internal pulse tempo and
performance practice tempo (at matra/beat level). In Hindustani music,
musicians think of tempo at layer 1, but the internal representation
stores tempo at the finest pulse level.

New methods:
- display_tempo (property getter/setter): Get/set tempo at matra level
- get_tempo_at_layer(layer): Get tempo at any specific hierarchy layer
- _get_hierarchy_mult(layer): Helper to get multiplier for a layer

Closes #55

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@github-actions
Copy link
Contributor

📦 Test Package Built Successfully!

This PR has been automatically built and uploaded to TestPyPI for testing.

🔗 TestPyPI Link: https://test.pypi.org/project/idtap/

To test this version:

pip install --index-url https://test.pypi.org/simple/ idtap

✅ All tests passed and package builds successfully.

@jon-myers jon-myers merged commit 346bfb6 into main Dec 10, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add display_tempo property to Meter class

2 participants